最近更新于 2025-12-02 20:24
前言
Python 的 Tkinter 图形库底层是用的 TCL/TK 实现。
NX 内嵌的 Python 是带有 TCL/TK 的 dll 引擎文件的,但是没有 TCL/TK 库文件,也就是为什么报错:This probably means that Tcl wasn’t installed properly.
Python 认为你没有安装 TCL/TK,不过 NX 的制造模块也会使用 TCL/TK 库,它就携带了库文件。只是在 NX 2506 中内嵌 Python 携带的 TCL/TK 的 dll 文件是 8.6.15 版本的,而制造模块携带的 TCL/TK 是 8.6.9 的,因此需要修改 TCL/TK 库让它检查版本时允许用 8.6.15 版本的引擎。
修改 TCL/TK 库版本检查
以管理员身份打开记事本。
用记事本编辑 %UGII_BASE_DIR%\MACH\auxiliary\tcl\library\tcl8.6.9 下的 init.tcl 文件

将 19 行要求 8.6.9 改为 8.6.15
package require -exact Tcl 8.6.15

用记事本编辑 %UGII_BASE_DIR%\MACH\auxiliary\tcl\library\tk8.6.9 下的 tk.tcl 文件
将 14 行要求 8.6.9 改为 8.6.15
package require -exact Tk 8.6.15

环境变量
①要么修改 Windows 的环境变量设置,新建 TCL_LIBRARY 和 TK_LIBRARY,把制造模块的 TCL/TK 库路径添加进去,就是上面修改的两个文件所在的路径,分别就是 TCL 和 TK 库路径。
②另外一种方案就是在使用 Tkinter 的代码中嵌入下面代码,在当前代码中临时添加 TCL 和 TK 的环境变量
import os
NX_PATH = os.getenv('UGII_BASE_DIR')
TCL_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tcl8.6.9')
TK_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tk8.6.9')
os.environ["TCL_LIBRARY"] = TCL_PATH
os.environ["TK_LIBRARY"] = TK_PATH
测试
下面是一段完整的测试代码
import os
NX_PATH = os.getenv('UGII_BASE_DIR')
TCL_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tcl8.6.9')
TK_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tk8.6.9')
os.environ["TCL_LIBRARY"] = TCL_PATH
os.environ["TK_LIBRARY"] = TK_PATH
""""
Tkinter 示例程序
"""
import tkinter as tk
from tkinter import messagebox
def on_click():
messagebox.showinfo("提示", "按钮被点击了!")
root = tk.Tk()
root.title("最简 Tkinter 示例")
root.geometry("300x150")
btn = tk.Button(root, text="点我", command=on_click)
btn.pack(expand=True)
root.mainloop()
使用 NX 运行,Tkinter 正常工作

